﻿Imports BE.BE
Imports DAL.DAL


Namespace BL

    Public Class Usuario_BL

        Shared Sub alta(ByVal pusr As Usuario_BE)
            'persistimos los datos básicos del usuario y el idioma.
            DAL_Usuario.Alta(pusr)


        End Sub


        Shared Sub modificar(ByVal pusr As Usuario_BE)
            'persistimos los datos básicos del usuario y el idioma.
            DAL_Usuario.Modificar(pusr)

            'FAMILIAS.
            '(previamente borramos las relaciones anteriores)
            DAL_Familia.eliminarFamiliasPorUsuario(pusr.id)

            'persistimos las familias actualmente asociadas.
            For Each fam As Familia_BE In pusr.Familias
                DAL_Familia.guardarFamiliaPorUsuario(fam, pusr.id)
            Next

            'PATENTES.
            'las patentes heredadas no necesitan persistirse.
            'y las patentes otorgadas ya fueron persitidas.

        End Sub


        Shared Sub baja(ByVal pusr As Usuario_BE)
            'se borra lógicamente el usuario seleccionado.
            DAL_Usuario.Borrar(pusr)
        End Sub


        Shared Function consultarNickPasswordUBloqueado(ByVal pnick As String, ByVal ppassword As String) As Integer

            ppassword = Helper_BL.encriptarMD5(ppassword)
            Dim usr As New Usuario_BE
            usr = DAL_Usuario.traerUsuario(pnick)

            If usr Is Nothing Then
                'no existe nick.
                Return 0
            End If

            If usr.bloqueado = True Then
                'bloqueado por superar 3 intentos fallidos.
                Return 1
            End If

            'çomparar
            If (ppassword = usr.password) Then
                'çlave bien ingresda pero l amisma fue reseteada
                If usr.passwordreset = True Then
                    Return 4
                Else
                    'clave bien ingresada, Login correcto
                    usr.Familias = Familia_BL.listarFamiliasPorUsuario(usr.id)
                    usr.Patentes = Patente_BL.ListarPatentesOtorgadas(usr.id)
                    Return 3
                End If
            Else
                ' çlave mal ingresada.
                Return 2
            End If

        End Function


        Shared Sub bloquearUsuario(ByVal pnick As String)
            DAL_Usuario.bloquearUsuario(pnick)
        End Sub


        Shared Sub desbloquearUsuario(ByVal pid As Integer)
            DAL_Usuario.desbloquearUsuario(pid)
        End Sub


        Shared Sub blanquearPassword(ByVal pid As Integer, ByVal pnewpassword As String)
            DAL_Usuario.blanquearPassword(pid, Helper_BL.encriptarMD5(pnewpassword))
        End Sub

        Shared Sub grabarNuevaPassword(ByVal pusr As Usuario_BE)
            DAL_Usuario.grabarNuevaPassword(pusr.id, Helper_BL.encriptarMD5(pusr.password))
        End Sub


        Shared Function traerUsuario(ByVal pnick As String) As Usuario_BE
            Return DAL_Usuario.traerUsuario(pnick)
        End Function

        Shared Function traerUsuarioPorId(ByVal pid As Integer) As Usuario_BE
            Return DAL_Usuario.traerUsuarioPorId(pid)
        End Function

        Shared Function traerUsuarioPorIdActivosYBorrados(ByVal pid As Integer) As Usuario_BE
            Return DAL_Usuario.traerUsuarioPorIdActivosYBorrados(pid)
        End Function

        Shared Sub grabarIntentosIncorrectosUsuario(ByVal pusr As Usuario_BE)
            DAL_Usuario.Modificar(pusr)
        End Sub


        Shared Function listar() As List(Of Usuario_BE)
            Return DAL_Usuario.Listar()
        End Function

        Shared Function listarPatentesOtorgadas(ByVal pid As Integer) As List(Of Patente_BE)
            Return DAL_Patente.listarPatentesOtorgadas(pid)
        End Function




    End Class

End Namespace


